// #include <stdio.h>
// #include <stdlib.h>
// #include <windows.h>
// #define MAX 100
//
// typedef struct CNode {
//     int index;
//     struct CNode* next;
// } CNode;
//
// typedef struct CTBox {
//     int data;
//     CNode* firstchild;
// } CTBox;
//
// typedef struct CTree {
//     CTBox nodes[MAX];
//     int size;
// } CTree;
//
// void InitTree(CTree* t) {
//     t->size = 0;
//     for (int i = 0; i < MAX; i++) {
//         t->nodes[i].firstchild = NULL;
//     }
// }
//
// // 添加节点（数据）
// void insertNode(CTree* t, int data) {
//     if (t->size >= MAX) {
//         printf("树已满\n");
//         return;
//     }
//     t->nodes[t->size].data = data;
//     t->size++;
// }
//
// // 添加父子关系（头插法）
// void insertRelate(CTree* t, int parentindex, int childindex) {
//     if (parentindex < 0 || parentindex >= t->size || childindex < 0 || childindex >= t->size) {
//         printf("无效的下标\n");
//         return;
//     }
//
//     CNode* newChild = (CNode*)malloc(sizeof(CNode));
//     if (newChild == NULL) {
//         printf("内存分配失败\n");
//         exit(1);
//     }
//     newChild->index = childindex;
//     newChild->next = t->nodes[parentindex].firstchild;  // 新节点指向原链表
//     t->nodes[parentindex].firstchild = newChild;       // 更新头指针
// }
//
// // 打印树结构（测试用）
// void printTree(CTree* t) {
//     for (int i = 0; i < t->size; i++) {
//         printf("节点%d(%d)的孩子: ", i, t->nodes[i].data);
//         CNode* child = t->nodes[i].firstchild;
//         while (child != NULL) {
//             printf("%d ", t->nodes[child->index].data);
//             child = child->next;
//         }
//         printf("\n");
//     }
// }
//
// // 释放内存
// void freeTree(CTree* t) {
//     for (int i = 0; i < t->size; i++) {
//         CNode* child = t->nodes[i].firstchild;
//         while (child != NULL) {
//             CNode* temp = child;
//             child = child->next;
//             free(temp);
//         }
//     }
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     CTree t;
//     InitTree(&t);
//
//     // 插入节点
//     insertNode(&t, 1);  // A（下标0）
//     insertNode(&t, 2);  // B（下标1）
//     insertNode(&t, 3);  // C（下标2）
//     insertNode(&t, 4);  // D（下标3）
//
//     // 构建树结构
//     insertRelate(&t, 0, 1);  // A的孩子是B
//     insertRelate(&t, 0, 2);  // A的孩子是C
//     insertRelate(&t, 1, 3);  // B的孩子是D
//
//     printTree(&t);
//     freeTree(&t);
//     return 0;
// }